<?
/*
	About: Установка и удаление других модулей
	Function and class prefix: setup_
	Date: 14.02.2007

	Copyright 2006-2007  Alex Djachenko
	Authors: Alex Djachenko
	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

	Принять участие в разработке или скачать новую версию вы можете на сайте
	http://code.google.com/p/my-site-framework/
	*/

// Загружаем библиотеки
// Пользователи
// mst_initmod('usersw');
// mst_modload('users');
// Умные данные
// mst_initlib('sharpdata');
// Умная база данных
// mst_initmod('sharpdb');

// Подключаем QuickForm    	
// mst_modload('pear','HTML/QuickForm');

// Имена переменных из $MT_mod_dat
// которые необходимо устанавливать как переменные окружения
$MT_mod_envvars='DB_modcfg';
// Перечисляем глобальные переменные
// $MT_mod_globalvars='Autrz_user,UserBD,Users_auth';
$MT_mod_globalvars='';
// Обьявляем глобальные переменные
// Обьявляем переменные конфигурации
// $MT_mod_cfg['autrz_type'] = 'users';

// Подключаем файл с настройками
$MT_mod_cfg = array();
include mst_modpath($MT_mod_name,'cfg/config.php');

// Инициализируем объекты базы данных
// include_once(mst_modpath($MT_mod_name,'sharpclasses/objinit.php'));

include mst_modpath($MT_mod_name,'lib/infmod.php');
include mst_modpath($MT_mod_name,'lib/install.php');
include mst_modpath($MT_mod_name,'lib/mod.php');


/**
 * @desc Создать папку с данными модуля
 * @param имя модуля
 * @return bool
 */
function setup_mkdatadir($this_mod)
{
	// Получаем путь
	$mod_data_path=mst_modpath($this_mod,'dat/',TRUE,TRUE);
	if ($this_mod !== 'setup')
	{	// Для setup сообщение не выводим, так как его может быть некуда записать
		setup_echo("Создаем для модуля ({$this_mod}) папку с данными ({$mod_data_path})\n");
	}
	// Существует ли папка с данными модуля
	if(!is_dir($mod_data_path))
	{
		// Создаем папку
		mkdir($mod_data_path,mst_getconfig('www_dirmod'));
	}
	// Успешно ли создана папка?
	if (is_dir($mod_data_path))
	{
		setup_echo("Успешно создана папка для модуля ({$this_mod}) папку с данными ({$mod_data_path})\n");
		return true;
	}else
	{
		setup_echo("Ошибка при создании папки модуля ({$this_mod}) папку с данными ({$mod_data_path})\n",'error');
		return false;
	}
}

/**
 * Вывод сообщения об установке
 *
 * @param сообщение $msg
 * @param тип сообщения $type
 * @param сбросить буфер вывода $flush
 * @return bool
 */
function setup_echo($msg,$type='none',$flush=false)
{
	$type = (string) $type;
	// Комируем сообщение для файла
	// Добавляем к тексту информацию, которая позволит идентифицировать сеанс
	$fmsg = "\n".date('d-m-Y H:i:s')."\t{$_SERVER['REQUEST_TIME']}\t{$_SERVER['REMOTE_ADDR']}\t{$_SERVER['REMOTE_PORT']}\t".trim($msg);
	// Путь к файлу с логом
	$log =mst_modpath('setup','dat/setup.log',FALSE,TRUE);
	$log_visual =mst_modpath('setup','dat/setup_v.log',FALSE,TRUE);
	
	// Выбираем тип ошибки
	switch ($type)
	{
		case 'error':
			$msg = '[Error] '.$msg;
			$fmsg = '[Error] '.$fmsg;
		break;
		case 'warning':
			$msg = '[Warning] '.$msg;
			$fmsg = '[Warning] '.$fmsg;
		break;
	}
	// Записываем информацию в лог установок
	error_log($fmsg,3,$log);
	error_log($msg,3,$log_visual);	
	// Выводим информацию на экран и сбрасываем буфер
	echo $msg;
	if ($flush)
	{
		//  Сбрасываем буфер вывода
		flush();
		
	}
	return true;
}

/**
 * Отключение лимитов исполнения
 *
 */
function setup_limitoff()
{
	// Отключаем временной лимит
	set_time_limit(0);
	// Отключаем лимит использования памяти
	ini_set('memory_limit','64M');
	// Игнорируем разрыв соединения с браузером
	ignore_user_abort();
	return true;
}

/**
 * Обнуляем буфер вывода и включаем отправку текста по мере работы
 *
 */
function setup_flush()
{
	// Очищаем буферы вывода
	while (@ob_end_clean()); 
	// Принудительная отправка текста сразу после вывода
	@ob_implicit_flush(true);
}
?>